TIM: A simple, lazy abstract machine to execute supercombinatorics

نویسندگان

  • Jon Fairbairn
  • Stuart Wray
چکیده

This paper is a description of the three instruction machine Tim, an abstract machine for the execution of supercombinators. Tim usually executes programmes faster than the G-machine style of abstract machine while being at least as easy to implement as an S-K combinator reducer. It has a lower overhead for passing unevaluated arguments than the G-machine, resulting in good performance even without strictness analysis, and is probably easier to implement in hardware. The description begins with a presentation of the instruction set of the machine, followed by the operational semantics of the normal order version and the algorithm to convert combinators to instructions. It then develops the machine to allow lazy evaluation and the use of sharing and strictness analysis. The final sections of the paper give some performance figures and comment upon the suitability of the machine for hardware implementation.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Deriving a Lazy Abstract Machine

We derive a simple abstract machine for lazy evaluation of the lambda calculus, starting from Launchbury's natural semantics. Lazy evaluation here means non-strict evaluation with sharing of argument evaluation, that is, call-by-need. The machine we derive is a lazy version of Krivine's abstract machine, which was originally designed for call-by-name evaluation. We extend it with datatype const...

متن کامل

The Categorical Multi-Combinator Machine: CMCM

Implementations of functional programming languages can take a number of different forms; the first implementations used the SECD machine of Landin [Lan], which is a generalisation of the abstract machine underlying implementations of imperative programming languages like Pascal. Making the implementation lazy can be done with some cost in efficiency (details can be found in Henderson’s book [H...

متن کامل

Constraint Functional Multicore Programming

In this paper we present the concurrent constraint functional programming language CCFL and an abstract machine for the evaluation of CCFL programs in a multicore environment. The source language CCFL is a simple lazy functional language with a polymorphic type system augmented by ask-/tell-constraints and conjunctions to express concurrent coordination patterns. As execution model for CCFL we ...

متن کامل

Implementing Disequality in the Lazy Functional Logic Language Babel

x Abstract In this paper 1 , we investigate an implementation of a lazy functional logic language (in particular the language BABEL MR88,MR92]) which uses disequality constraints for solving equations and building answers. We specify a new operational semantics which combines lazy narrowing with disequality constraints and we deene an abstract machine tailored to the execution of BABEL programs...

متن کامل

A Chemical Abstract Machine for Graph Reduction

Graph reduction is an implementation technique for the lazy λ-calculus. It has been used to implement many non-strict functional languages, such as lazy ML, Gofer and Miranda. Parallel graph reduction allows for concurrent evaluation. In this paper, we present parallel graph reduction as a Chemical Abstract Machine, and show that the resulting testing semantics is adequate wrt testing equivalen...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 1987